import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
var car=JSON.parse(localStorage.getItem('car') || '[]')    //购物车里面的count由本地存储提供，可以永久保留
export default new Vuex.Store({
  
  state: {
    car:car
  },
  mutations: {
  addToCat(state,objcar){
        var flag=false   //假设在购物车里面没有找到相同的商品
        console.log(state.car)
   state.car.some(item=>{     //有商品的话id加一       没有话直接push进去
     if(item.id==objcar.id){
       item.count += parseInt(objcar.count)
       flag=true
     }
   })
   if(!flag){
    state.car.push(objcar)
   }

   localStorage.setItem('car',JSON.stringify(state.car))
},
    updatacarlist(state,objcar){   //修改商品购物车的数量值
      state.car.some(item=>{
        if(item.id==objcar.id){
          item.count = parseInt(objcar.count)
          return true
        }
      })                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
      //修改完之后，把最新的数据保存在本地存储中
      localStorage.setItem('car',JSON.stringify(state.car))
    },
    deleteFromcar(state,id){   //在vuex里面删除数据
      state.car.some((item,i)=>{
        if(item.id==id){
          state.car.splice(i,1)
          return true
        }
      })
      localStorage.setItem('car',JSON.stringify(state.car))
    },
    changeSelect(state,info){    //同步按钮状态
      state.car.some(item=>{
        if(item.id==info.id){
          item.selected=info.selected
        
        }
      })
      localStorage.setItem('car',JSON.stringify(state.car))
    }
  },
  getters:{
    getAllCount(state){     //计算购物车商品总数量
      var c=0
      state.car.forEach(item=>{
        c+=item.count
      })
      return c
    },
    getCarcont(state){      //购物车商品的单个数量
      var o={}
      state.car.forEach(item=>{
        o[item.id]=item.count
      })
      return o
    },
    getbutton(state){
      var o={}
      state.car.some(item=>{
        o[item.id]=item.selected
      })
      return o
    },
    getCarCountMoney(state){   //获取总的商品数量和总价
      var o={
        count:0,
        money:0
      }
      state.car.some(item=>{
       if(item.selected){    //商品被勾选以后才可以计算价格
        o.count+=item.count
        o.money+=item.price*item.count
       }
      })
      return o
    }
  },
  actions: {

  }
})
